package com.operator.Activitys.http.api;


import com.operator.Activitys.bean.Back;
import com.operator.Activitys.bean.CardOrder;
import com.operator.Activitys.bean.InstallOrder;
import com.operator.Activitys.bean.MoneyState;
import com.operator.Activitys.bean.MsgNotice;
import com.operator.Activitys.bean.OrderPayState;
import com.operator.Activitys.bean.PrizePunish;
import com.operator.Activitys.bean.PurchaseOrder;
import com.operator.Activitys.bean.PutForwardList;
import com.operator.Activitys.bean.RechargeList;
import com.operator.Activitys.bean.SearchShop;
import com.operator.Activitys.bean.ShopConfirmMsg;
import com.operator.Activitys.bean.State;
import com.operator.Activitys.bean.TradeList;
import com.operator.Activitys.bean.TransferList;
import com.operator.Activitys.bean.pack.SalesRecordJsonPack;
import com.operator.Activitys.bean.pack.StockQueryJsonPack;
import com.operator.Activitys.bean.pack.UserJsonPack;

import java.util.List;

import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * 项目名称：
 * 类描述：User 接口 API
 * 创建人：张飞祥
 * 创建时间：2017/11/24  上午 10:33
 * 修改人：张飞祥
 * 修改时间：2017/11/24  上午 10:33
 * 修改备注：
 */
public interface UserAPI {

    //TODO 店铺注册
    @POST("StoreInfo/CreateStore")
    Observable<State> userRegister(@Header("cookie") String sessionId, @Query("StoreName") String storeName,
    @Query("Mobile") String mobile, @Query("Area") String area, @Query("Address") String address,
    @Query("LinkTel") String linkTel, @Query("CountermanName") String countermanName,@Query("CountermanTel") String CountermanTel,
    @Query("vCode") String vCod, @Query("Pwd") String pwd);

    //TODO 店铺登录
    @POST("StoreInfo/AppStoreLogin")
    Observable<UserJsonPack> userLogin(@Query("Mobile") String mobile, @Query("pwd") String pwd);

    //TODO 店铺认证 获取银行种类
    @POST("AuthenticationInfo/AppLoadBankType")
    Observable<List<Back>> userBackList();

    //TODO 获取店铺认证信息
    @POST("AuthenticationInfo/AppGetCertifiedInfo")
    Observable<ShopConfirmMsg> userConfirmMsg(@Query("StoreId") int storeId);

    //TODO 获取店铺认证信息
    @POST("AuthenticationInfo/AppEditCertifiedInfo")
    Observable<State> userUpdateConfirmMsg(
    @Query("StoreId") int storeId,@Query("authenticationInfoId") int authenticationInfoId,
    @Query("BankCardNum") String bankCardNum, @Query("BankCategory") String bankCategory);

    //TODO 店铺认证 提交认证信息
    @POST("AuthenticationInfo/AppSubCertifiedInfo")
    Observable<State> userShopSubmit(
    @Query("StoreId") int storeId, @Query("BankCardNum") String bankCardNum,
    @Query("IdCardNum") String idCardNum, @Query("BankCardHolder") String bankCardHolder,
    @Query("BankCategory") String bankCategory, @Query("IDCardImgUrl") String idCardImgUrl,
    @Query("BusinessLicenceImgUrl") String businessLicenceImgUrl, @Query("MTImgUrl") String mtImgUrl,
    @Query("DNImgUrl") String dnImgUrl);

    //TODO 店铺 号卡订单 记录
    @POST("TelCardOrder/AppLoadTelOrderInfo")
    Observable<List<CardOrder>> userCardOrder(
    @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 店铺 号卡订单 支付
    @POST("TelCardOrder/AppPayTelCardOrder")
    Observable<OrderPayState> userCardPay(
            @Query("StoreId") int storeId, @Query("OrderId") int orderId);

    //TODO 店铺 宽带订单 记录
    @POST("BroadbandOrderInfo/AppLoadBroadbandOrderInfo")
    Observable<List<InstallOrder>> userInstallOrder(
    @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 店铺 宽带订单 支付
    @POST("BroadbandOrderInfo/AppPayBroadbandOrder")
    Observable<OrderPayState> userInstallPay(
    @Query("StoreId") int storeId, @Query("BroadbandOrderId") int broadbandOrderId);

    //TODO 店铺 充值
    @POST("RechargeRecord/AppRechangeMoney")
    Observable<MoneyState> userRecharge(
    @Query("StoreId") int storeId, @Query("Money") int money,@Query("Type") String type);

    //TODO 店铺 充值 记录
    @POST("RechargeRecord/AppGetRechangeRecord")
    Observable<List<RechargeList>> userRechargeList(
    @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 店铺 提现
    @POST("WithdrawCash/AppSubWithdrawCash")
    Observable<MoneyState> userPutForward(
            @Query("StoreId") int storeId, @Query("money") double money);

    //TODO 店铺 充值 记录
    @POST("WithdrawCash/AppGetbWithdrawCashRecord")
    Observable<List<PutForwardList>> userPutForwardList(
            @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 店铺 模糊搜索
    @POST("StoreInfo/AppGetStoreInfo")
    Observable<List<SearchShop>> userSearchShop(
            @Query("MHStorename") String MHStorename, @Query("ThisStoreName") String ThisStoreName);


    //TODO 店铺 转账
    @POST("TransferRecord/AppStoreTransferRecord")
    Observable<MoneyState> userTransfer(
            @Query("fromStoreName") String fromStoreName, @Query("toStoreName") String toStoreName, @Query("money") double money);


    //TODO 店铺 转账 记录
    @POST("TransferRecord/AppGetTransferRecord")
    Observable<List<TransferList>> userTransferList(
            @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 获取库存
    @POST("CarpiStock/AppLoadCarpiStock")
    Observable<StockQueryJsonPack> userStockQueryList(
            @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 卡号进货
    @POST("CarpiPurchaseOrder/AppSubCarpiPurchaseOrder")
    Observable<State> userCardPurchase(
    @Query("StoreId") int storeId, @Query("CardOf170Num") int CardOf170Num,@Query("CMCC_CardNum") int CMCC_CardNum,
    @Query("UnicomCardNum") int unicomCardNum, @Query("TelecomCardNum") int telecomCardNum,@Query("LinkTel") String linkTel,
    @Query("ShippingAddress") String shippingAddress, @Query("ShoppingMethod") String shoppingMethod);

    //TODO 进货订单 记录
    @POST("CarpiPurchaseOrder/AppGetCarpiPurchaseOrder")
    Observable<List<PurchaseOrder>> userPurchaseOrderList(
            @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 获取 号卡销售 记录
    @POST("TelCardOrder/GetCompletedOrderRecord")
    Observable<SalesRecordJsonPack> userCardSalesList(
    @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize,
    @Query("startTime") String startTime,@Query("endTime") String endTime);

    //TODO 获取 宽带销售 记录
    @POST("BroadbandOrderInfo/GetCompletedOrderRecord")
    Observable<SalesRecordJsonPack> userInstallSalesList(
    @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize,
    @Query("startTime") String startTime,@Query("endTime") String endTime);

    //TODO 修改用户头像
    @POST("StoreInfo/AppChangeStoreImg")
    Observable<State> userUpdateIcon(
    @Query("StoreId") int storeId, @Query("Url") String url);

    //TODO 新建支付密码
    @POST("StoreInfo/NewSetTsPwd")
    Observable<State> userNewTsPwd(
    @Query("StoreId") int storeId, @Query("TsPwd") String tsPwd);

    //TODO 修改支付密码
    @POST("StoreInfo/SetTsPwd")
    Observable<State> userSetTsPwd(
    @Query("StoreId") int storeId, @Query("OldTsPwd") String oldTsPwd, @Query("NewTsPwd") String NewTsPwd);

    //TODO 忘记支付密码 重置密码
    @POST("StoreInfo/EditTsPwdOfForget")
    Observable<State> userEditTsPwdOfForget(
    @Header("cookie") String sessionId,@Query("Vocde") String vocde,@Query("Mobile") String mobile,@Query("TsPwd") String tsPwd);

    //TODO 验证支付 密码
    @POST("StoreInfo/CheckTsPwd")
    Observable<State> userCheckPayPwd(@Query("StoreId") int storeId,@Query("TsPwd") String tsPwd);

    //TODO 修改登录密码
    @POST("StoreInfo/SetLoginPwd")
    Observable<State> userUpdateLoginPwd(
    @Query("StoreId") int storeId, @Query("OldLoginPwd") String oldLoginPwd, @Query("NewLoginPwd") String newLoginPwd);

    //TODO 忘记登录密码 重置密码
    @POST("StoreInfo/EditLoginPwdOfForget")
    Observable<State> userUsedLoginPwd(
    @Header("cookie") String sessionId,@Query("Vocde") String vocde,@Query("Mobile") String mobile,@Query("Pwd") String pwd);

    //TODO 修改店铺信息
    @POST("StoreInfo/EditStoreInfo")
    Observable<State> userUpdateShop(
    @Query("StoreId") int storeId,@Query("StoreName") String storeName, @Query("Mobile") String mobile,
    @Query("Area") String area,@Query("Address") String address,@Query("LinkTel") String linkTel,
    @Query("CountermanName") String countermanName,@Query("CountermanTel") String countermanTel);

    //TODO 店铺 交易记录
    @POST("FinancialManagement/AppGetBillInfo")
    Observable<List<TradeList>> userTradeList(
            @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 店铺 奖惩记录
    @POST("FinancialManagement/AppGetAwardAndPenaltyRecords")
    Observable<List<PrizePunish>> userPrizePunishList(
            @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);

    //TODO 店铺 推送消息记录
    @POST("CustomPush/AppGetAllPushRecord")
    Observable<List<MsgNotice>> userMsgNoticeList(
            @Query("StoreId") int storeId, @Query("pageIndex") int pageIndex,@Query("pageSize") int pageSize);
}
